#ifndef KAOQINSYS_H
#define KAOQINSYS_H

#include <QMainWindow>

/* 哈希表 */
#include <QMap>

/* 字符串列表 */
#include <QStringList>

/* 用户 */
#include "user.h"

namespace Ui {
class KaoQinSys;
}

class KaoQinSys : public QMainWindow
{
    Q_OBJECT

public:
    explicit KaoQinSys(QWidget *parent = nullptr);
    ~KaoQinSys();

protected:
    /* 关闭事件 */
    void closeEvent(QCloseEvent *event);

public slots:
    /* 录入信息 - 槽函数 */
    void handleEnterInfoSlot();
    /* 删除信息 - 槽函数 */
    void handleDelInfoSlot();
    /* 查询信息 - 槽函数 */
    void handleSearchInfoSlot();

    /* 录入学生信息 - 槽函数 */
    void handleRecordInfoSlot();
    /* 清空文本框内容 - 槽函数 */
    void handleClearContextSlot();

    /* 查询删除信息 - 槽函数 */
    void handleSearchDelSlot();

private:
    /* 保存用户的映射信息 */
    void saveUserMapInfo();

    /* 加载默认的配置文件 */
    void loadAppointConfigFile(QString filePath);


    /* 根据用户名找到对应的卡号 */
    QStringList accordUserToCard(const QString & username);

    /* 根据卡号删除对应的用户信息 */
    void delUserAccordAppointCard(const QString & cardId);
    /* 初始化table表格*/
private:
    Ui::KaoQinSys *ui;

    /* 哈希表 */
    QMap<QString, User *> m_mapInfo;

    /* 配置文件的绝对路径 */
    QString m_userInfoPath;
};

#endif // KAOQINSYS_H
